/* =============================================================
 * date-utils.js v1.1.0
 * =============================================================
 * Original written by Ysy
 * =============================================================
 * Date 15/06/2021
 * ============================================================ */


define(["jquery", "CommonUtils"], function ($, CommonUtils) {
    let StringUtils = {

        /**
         * 字符串非空判定
         * @param str  需要判断的字符串
         * @returns {boolean}
         */
        isEmpty: function (str) {
            // 正则表达式用于判斷字符串是否全部由空格或换行符组成
            let reg = /^\s*$/;
            if (str && str !== "" && !reg.test(str)) return false;

            return true;
        },

        /**
         * 字符串非空判定
         * @param str  需要判断的字符串
         * @returns {boolean}
         */
        isNotEmpty: function (str) {
            return !this.isEmpty(str);
        },

        /**
         * 字符串值是否相等判断  这里不做严格比较
         * @param str1
         * @param str2
         * @returns {boolean}
         */
        equals: function (str1, str2) {
            let boolean = false;
            if (!str1 || !str2) return boolean;

            if (str1 == str2) boolean = true;
            return boolean;
        },

        /**
         * 字符串格式化  将 "{min=0,aver=0.10,max=0.60}"  转为对象
         * @param str  需要转化的字符串
         * @returns {object|*}
         */
        formatToObject: function (str) {
            let obj = {};
            if (!str || !CommonUtils.isString(str)) return obj;

            str = str.replace("{", "").replace("}", "");
            str.replace(/(\w+)(?:=([^,]*))?/g, (str, key, value) => {
                obj[key] = value;
            });

            return obj;
        },

        /**
         * 字符串转数字
         * @param str  需要转化的字符串
         * @param radix  转换进制  10-十进制
         * @returns {number|*}
         */
        toNumber: function (str, radix) {// radix:转换进制
            if (!str || !CommonUtils.isString(str)) return str;

            radix = radix ? radix : 10;// 默认10进制转换
            if (/^-?\d+$/.test(str)) {// 整数
                return Number.parseInt(str, radix);
            } else if (/^(-?\d+)(\.\d+)?$/.test(str)) {// 浮点数
                return Number.parseFloat(str);
            }

            return str;
        },

        /**
         * 对一个字符串或数字取整数或小数部分
         * @param param  需要处理的字符串或数字
         * @param type  需要取的部分  int-代表取整数部分  float-代表取小数部分
         * @returns {string|*|number|number}
         */
        getNumberPart: function (param, type) {
            if (!param) return "";

            let num = CommonUtils.isString(param) ? this.strToNumber(param) : param;
            if (!CommonUtils.isNumber(num)) return num;

            if (Object.is("int", type)) {// 取整数部分
                return Math.trunc(num);
            } else if (Object.is("float", type)) {// 取小数部分
                return this.subtraction(num, Math.trunc(num));
            }
            return param;
        },
    };

    return StringUtils;
});

